package com.gc.type;

import java.util.Random;

/**
 * @Author: tgy
 * @Date: 2020-08-06 10:14
 */
public class CMSGC {

    /**
     *
     * ConcMarkSwap 的过程
     *
     * 1. 初始标记
     *      有 STW(Stop The World)
     * 2. 并发标记
     *
     * 3. 重新标记
     *      有 STW
     * 4. 清除
     *
     * 参数
     *  -Xms10M -Xmx10M -XX:+PrintGCDetails -XX:+PrintCommandLineFlags -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=15
     *
     *  JVM 的GC 选择
     *      - Young 区
     *          -XX:+UseParNewGC
     *      - Tenured 区
     *          -XX:+UseConcMarkSweepGC
     *
     *  CMS的缺点
     *  1. CMS 收集器对 CPU 资源非常敏感
     *  2. CMS 无法处理浮动垃圾（Floating Garbage）
     *  3. CMS 采用的是标记清除法，上文我们已经提到这种方法会产生大量的内存碎片，这样会给大内存分配带来很大的麻烦，
     *      如果无法找到足够大的连续空间来分配对象，将会触发 Full GC，这会影响应用的性能。
     *      当然我们可以开启  -XX:CMSFullGCsBeforeCompation 用来设置执行多少次不压缩的 Full GC 后跟着带来一次带压缩的。
     *
     */

    public static void main(String[] args) {

        Random random = new Random();

        StringBuilder stringBuilder = new StringBuilder();

        while (true){

            stringBuilder.append(random.nextInt(77777) + 10000);

        }

    }
}
